package day14;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/*本类用于测试List接口*/
public class TestList {
    public static void main(String[] args) {
        //1.创建List接口多态对象,注意List是接口,不能实例化
        List<String> list = new ArrayList<String>();
        //2.测试继承自Collection接口中的方法
        list.add("大力娃");//向集合中添加元素
        list.add("千顺娃");
        list.add("头铁娃");
        list.add("喷水娃");
        list.add("喷火娃");
        list.add("隐身娃");
        list.add("小紫娃");
        System.out.println(list);//查看集合中的元素
        //list.clear();//清空集合
        //System.out.println(list);//[]

        System.out.println(list.remove("千顺娃"));//移出集合中的指定元素
        System.out.println(list.size());//获取集合中元素的个数
        System.out.println(list.hashCode());//获取集合对象的哈希码
        System.out.println(list.isEmpty());//判断集合是否为空
        System.out.println(list.contains("小紫娃"));//判断集合中是否有指定元素
        System.out.println(list.equals("喷火娃"));//flse,"喷火娃"是否与集合list相同
        System.out.println(Arrays.toString(list.toArray()));//将集合转为数组

        //3.测试List接口特有的方法--都是可以根据索引进行操作的方式
        list.add("小蝴蝶");//不指定位置就追加在最后
        System.out.println(list);
        list.add(0,"蛇精");//在指定索引处添加元素,首个位置下标为0
        System.out.println(list);
        System.out.println(list.get(2));//头铁娃,获取指定索引处的元素
        System.out.println(list.indexOf("小蝴蝶"));//判断指定元素的索引
        list.add("小蝴蝶");
        System.out.println(list.lastIndexOf("小蝴蝶"));//判断指定元素最后一次出现的索引
        System.out.println(list.remove(5));//根据索引值移出指定元素
        System.out.println(list);
        System.out.println(list.set(7,"蝎子精"));//重置指定下标出的元素值
        System.out.println(list);
        List<String> subList = list.subList(3,7);//截取子串,含头不含尾[3,7)
        System.out.println(subList);

        //4.测试集合间的操作
        List list2 = new ArrayList<String>();
        list2.add("1");
        list2.add("2");
        list2.add("3");
        System.out.println( list.addAll(list2));//把list2追加到list集合的最后
        System.out.println( list );
        System.out.println( list.addAll(1,list2));//把list2集合的所有元素添加到指定位置
        System.out.println( list );
        System.out.println(list.containsAll(list2));//判断list集合是否包含list2集合中的所有元素
        System.out.println("***********");
        System.out.println( list.retainAll(list2));//保留list集合中属于list2集合的所有元素,交集
        System.out.println( list);
        System.out.println( list.removeAll(list2));//移出list集合中属于list2集合的所有元素
        System.out.println(list);//[]
    }
}
